// 封装本地存储操作模块

/* 一个本地存储的数据应该拥有哪些特性: 增删改查 */

// 存储数据(新增,修改)
export const setItem = (key, value) => {
  // 将数组,对象等引用数据类型转化为JSON字符串进行存储
  // 将简单数据类型直接存储
  // 需要外界使用该方法时传入对应的键值对
  if (typeof value === 'object') {
    value = JSON.stringify(value)
  }
  localStorage.setItem(key, value)
}

// 获取数据
export const getItem = key => {
  // 如果该建存储的是引用数据类型的JSON字符串,需要进行JSON.parse转化
  // 使用JSON.parse()做数据转化时可能会报错, 1. 要么做条件判断(要去找到所有满足,不满足的条件), 2. 要么做错误判断
  const data = localStorage.getItem(key)
  try {
    return JSON.parse(data)
  } catch (error) {
    // 先尝试做JSON.parse()转化, 如果报错了, 再把它当作原始数据进行返回
    return data
  }
}

// 删除存储数据
export const removeItem = key => {
  localStorage.removeItem(key)
}
